cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

project(recipe-09 LANGUAGES CXX)

add_library(animal SHARED Animal.hpp Animal.cpp
                            Cat.hpp Cat.cpp
                            Dog.hpp Dog.cpp)
set_target_properties(animal PROPERTIES                                     # 设置属性
                                CXX_STANDARD 14                             # C++14
                                CXX_EXTENSION OFF                           # 只启用 ISO C++ 标准的编译器标志， 而不使用特定编译器的扩展。
                                CXX_STANDARD_REQUIRED ON                    # 如果这个版本不可用， CMake将停止配置并出现错误
                                POSITION_INDEPENDENT_CODE 1)                # 在使用一些编译器构建DSO时出现问题

add_executable(animal-farm animal-farm.cpp)
set_target_properties(animal-farm PROPERTIES                                # 设置属性
                                    CXX_STANDARD 14
                                    CXX_EXTENSIONS OFF
                                    CXX_STANDARD_REQUIRED ON)
target_link_libraries(animal-farm animal)